package com.itjin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.itjin.model.domain.entity.Message;
import com.itjin.model.domain.dto.SendMessageDTO;
import com.itjin.model.domain.vo.MessageVO;
import java.util.List;
import java.util.Map;

public interface MessageService extends IService<Message> {
  /**
   * 发送消息
   * 
   * @param senderId   发送者ID
   * @param messageDTO 消息内容
   * @return 消息VO
   */
  MessageVO sendMessage(Integer senderId, SendMessageDTO messageDTO);

  /**
   * 获取用户的消息列表（包括发送和接收的）
   * 
   * @param userId 用户ID
   * @return 消息列表
   */
  List<MessageVO> getUserMessages(Integer userId);

  /**
   * 标记消息为已读
   * 
   * @param messageId 消息ID
   * @param userId    用户ID
   * @return 是否成功
   */
  boolean markMessageAsRead(Long messageId, Integer userId);

  /**
   * 获取两个用户之间的对话记录
   * 
   * @param userId1 用户1的ID
   * @param userId2 用户2的ID
   * @return 对话记录列表
   */
  List<MessageVO> getConversationMessages(Integer userId1, Integer userId2);

  /**
   * 查询用户帖子的赞与收藏情况
   * 
   * @param userId 用户ID
   * @param days   查询最近几天的数据
   * @param page   页码
   * @param size   每页条数
   * @return 帖子互动信息
   */
  Map<String, Object> getPostInteractions(Integer userId, Integer days, Integer page, Integer size);

  /**
   * 查看用户近期的新增关注情况
   * 
   * @param userId 用户ID
   * @param days   查询最近几天的数据
   * @param page   页码
   * @param size   每页条数
   * @return 近期关注者信息
   */
  Map<String, Object> getRecentFollowers(Integer userId, Integer days, Integer page, Integer size);

  /**
   * 查看用户最近帖子相关的评论情况
   * 
   * @param userId 用户ID
   * @param days   查询最近几天的数据
   * @param page   页码
   * @param size   每页条数
   * @return 近期评论信息
   */
  Map<String, Object> getRecentComments(Integer userId, Integer days, Integer page, Integer size);
}
